home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C & C++ Multimedia Cyber Classroom
/
C and C++ Multimedia Cyber Classroom (Prentice Hall) (1998).iso
/
src
/
fig16_14.jar
/
Ch16
/
Fig16_14
/
Fig16_14.cpp
Wrap
C/C++ Source or Header
|
1997-11-10
|
1KB
|
48 lines
// Fig. 16.14: fig16_14.cpp
// Example using a bit field
#include <iostream.h>
#include <iomanip.h>
struct BitCard {
unsigned face : 4;
unsigned suit : 2;
unsigned color : 1;
};
void fillDeck( BitCard * );
void deal( BitCard * );
int main()
{
BitCard deck[ 52 ];
fillDeck( deck );
deal( deck );
return 0;
}
void fillDeck( BitCard *wDeck )
{
for ( int i = 0; i <= 51; i++ ) {
wDeck[ i ].face = i % 13;
wDeck[ i ].suit = i / 13;
wDeck[ i ].color = i / 26;
}
}
// Output cards in two column format. Cards 0-25 subscripted
// with k1 (column 1). Cards 26-51 subscripted k2 in (column 2.)
void deal( BitCard *wDeck )
{
for ( int k1 = 0, k2 = k1 + 26; k1 <= 25; k1++, k2++ ) {
cout << "Card:" << setw( 3 ) << wDeck[ k1 ].face
<< " Suit:" << setw( 2 ) << wDeck[ k1 ].suit
<< " Color:" << setw( 2 ) << wDeck[ k1 ].color
<< " " << "Card:" << setw( 3 ) << wDeck[ k2 ].face
<< " Suit:" << setw( 2 ) << wDeck[ k2 ].suit
<< " Color:" << setw( 2 ) << wDeck[ k2 ].color
<< endl;
}
}